//防抖
function debounce(fn,delay = 300) {
    // 声明一个变量，用于存储定时器
    let timer = null;
    // 返回一个新的函数，这个函数在被连续调用时，会确保fn不会连续执行，而是等待delay时间后执行
    return function() {
        // 如果定时器存在，则清除定时器
        if(timer) clearInterval(timer);
        // 设置一个新的定时器，当延迟时间结束后，执行fn函数
        timer = setTimeout(() => {
            fn.apply(this,arguments)
            timer = null;
        },delay)
    } 
}
//节流
function throttle(fn,delay = 300) {
    let timer = null;
    return function() {
        if(timer) return;
        timer = setTimeout(() => {
            fn.apply(this,arguments);
            timer = null;
        },delay)
    }
}